/**
 * 需求：创建商品切片和reducer 、action
 * 
 */
// 导入：
import {createSlice} from '@reduxjs/toolkit'

const goodsSlice = createSlice({
    // 指定切片名
    name:'goods',
    // 数据:一般而言是一个对象
    initialState:{
        goodsList:[
            {
                id:1,
                gname:'小米手机',
                price:1999
            }
        ]
    },
    // 指定修改数据的reducers，reducer的身份，其实就是一个函数
    reducers:{
        /**
         * 添加商品 
         * @param {*} state 状态数据 initialState的值
         * @param     action 动作行为 身份是一个对象，
         * 样子如下: {type:'切片名/reducer名', payload: 数据} =>{type:'goods/addGoods',payload:数据}
         * 
         * 注意：每创建一个程序员，会自动创建一个产品经理【actionCreator】,名字跟程序员名字一样
         */
        addGoods(state, action){
            // 添加商品方法
            state.goodsList.push({
                id: Math.random().toString(36).slice(2),
                ...action.payload
            })
        },
        decGoods(state, action){

        }
    }
})

// 获取actionCreator action动作行为 creator 创造者， actionCreator 动作创造者=》函数运行的结果，就是action对象 {type:'切片名/方法名', payload:数据}


console.log('goodsSlice: ', goodsSlice)
// 此处 addGoods身份是 actionCreator, 运行的结果 返回一个action对象
const {addGoods} = goodsSlice.actions

console.log('actionCreator addGoods(): ',addGoods(123)) //==>  {type:'goods/addGoods', payload:123}

// actionCreator type 为什么是 ==》 模块名/方法名

